package com.lvmama.service.rhino.topic;

import com.github.pagehelper.PageInfo;
import com.lvmama.common.exception.BizException;
import com.lvmama.pojo.entity.rhino.topic.StatisticCode;
import com.lvmama.pojo.dto.rhino.topic.StatisticCodesConditionVO;

import java.util.List;

public interface StatisticCodeService {


    /**
     * 分页查询统计code码信息
     * @param sc
     * @return
     */
    PageInfo<StatisticCode> getAllList(StatisticCodesConditionVO sc);

    Integer insertStatisticCodeObj(StatisticCode statisticCode);

    Integer insertOtherStatisticCodeObj(StatisticCode statisticCode);

    Integer getCountForCode(String code);

    /**
     * 获取统计code码数据
     * @return
     */

    List<StatisticCode> getStatisticCodeList();
    /**
     * 根据条件查询code对象
     * @param statisticCode
     * @return
     */
    StatisticCode selectStatisticCode(StatisticCode statisticCode);

    /**
     * 查询所有包含该前缀的code码信息
     * @param levelCode
     * @return
     */
    List<String> getLikeCodes(String levelCode);

    /**
     * 查询所有专题code码信息
     * @param levelCode
     * @return
     */

    List<String> getZhtiLikeCode(String levelCode);

    /**
     * 查询所有坑位code码信息
     * @return
     */
    List<String> getPitLikeCode();


    /**
     * 查询name是否存在
     * @param name
     * @return
     */
    int getCountForName(String name);

    /**
     * 操作code码信息
     * @param statisticCode
     * @return
     */
    int operationCode(StatisticCode statisticCode) throws BizException;

    /**
     * 根据id查询子节点
     * @param id
     * @return
     */
    List<StatisticCode> queryChildCodeListByParentId(Integer id);

    /**
     * 根据父级code码，查询子级对象
     * @param string
     * @return
     */
    List<StatisticCode> getLikeCodeObj(String string);

    /**
     * 更新code码信息
     * @param statisticCode
     * @return
     */
    int updateCode(StatisticCode statisticCode);
    int updateOtherCode(StatisticCode statisticCode);

    /**
     * 查询所有前缀为codeName的code码值
     * @param codeName
     * @return
     */
    List<String> getCodeByLikeName(String codeName);

    /**
     * 根据父级code码，查询子级对象(不包含父级对象)
     * @param string
     * @return
     */
    List<StatisticCode> getLikeCodeObjNotParent(String string);

    /**
     * 查询所有前缀为codeName的渠道code码值
     * @param codeName
     * @return
     */
    List<String> getDeviceCodeByLikeName(String codeName);

    /**
     * 查询所有前缀为codeName的pc,wap渠道code码值
     * @param codeName
     * @return
     */
    List<String> getDeviceCodeByLikeNamePcAndWap(String codeName);

    /**
     * 根据code码查询父级和子级的code码信息
     * @param code
     * @return
     */
    List<StatisticCode> getParentAndChildrenLikeCodeObj(String code);


    /**
     * 查询app的设备的code码信息
     * @return
     */
    List<String> getDeviceCodeApp();


    /**
     * 查询无线设备的code码信息
     * @return
     */
    List<String> getDeviceCodeNoPC();


    /**
     * 根据父级code码，查询所有子级code(不包含父级对象)
     * @param
     * @return
     */
    List<String> getChannelCode(String code);



    /**
     * @Title: getNameByCode
     * @Description: 根据code获取名称
     * @param @param code
     * @param @return    设定文件
     * @return StatisticCode    返回类型
     * @throws
     */
    StatisticCode getNameByCode(String code);

    /**
     * 根据父id查询所有的子级
     * @param statisticCodes
     * @param parentId 父id
     * @return
     */
    List<StatisticCode> getZhtiPitByParentId(List<StatisticCode> statisticCodes, Integer parentId);


    /**
     * 获取页面下面所有的末级子节点的名称
     * @return
     */
    List<String> getPageAllSonName();

}
